/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package modelo;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.jdbc.core.support.JdbcDaoSupport;

/**
 *
 * @author odeen
 */
public class ProyectoDAOImpl extends JdbcDaoSupport implements ProyectoDAO {

    private final String SELECT_LIBRO = "select id,isbn,titulo,numeroPaginas from libro ";
    private final String SELECT_BY_ID_LIBRO = SELECT_LIBRO + "where id=?";
    private final String INSERTAR_LIBRO = "insert into libro (id,isbn,titulo,numeroPaginas) "
            + "values (?,?,?,?)";
    private final String ACTUALIZAR_LIBRO = "update libro set isbn=?, titulo=?, numeroPaginas=? "
            + "where id=?";
    private final String BORRAR_LIBRO = "delete from libro "
            + "where id=?";

    @Override
    public void guardarLibro(final Libro libro) {
        this.getJdbcTemplate().update(INSERTAR_LIBRO,
                new Object[]{
                    libro.getId(),libro.getIsbn(), libro.getTitulo(), libro.getNumeroPaginas()
                });
    }

    @Override
    public void actualizarLibro(Libro libro) {
        this.getJdbcTemplate().update(ACTUALIZAR_LIBRO,
                new Object[]{
                    libro.getIsbn(), libro.getTitulo(), libro.getNumeroPaginas(), libro.getId()
                });
    }

    @Override
    public void borrarLibro(Libro libro) {
        this.getJdbcTemplate().update(BORRAR_LIBRO,
                new Object[]{
                    libro.getId()
                });
    }

    @Override
    public Libro buscarLibroPorId(int id) {
        List hallados = this.getJdbcTemplate().query(SELECT_BY_ID_LIBRO,
                new Object[]{id},
                new RowMapper() {

                    @Override
                    public Object mapRow(ResultSet rs, int numeroRegistros) throws SQLException {
                        Libro l = new Libro();
                        l.setId(rs.getInt(1));
                        l.setIsbn(rs.getString(2));
                        l.setTitulo(rs.getString(3));
                        l.setNumeroPaginas(rs.getInt(4));
                        return l;
                    }
                });
        return (Libro) ((hallados.size() > 0) ? hallados.get(0) : null);
    }
}
